package org.al.poc.persistence.dao;

import java.util.Properties;

/**
 * @author Jérome, Raphael
 */
public class DaoFactoryJpaOracle extends DaoFactoryJpa {

	/**
	 * Représente le nom de l'unité de persistance du fichier persistence.xml
	 */
	private static String PERSIST_UNIT = "JpaOracle";
	
	private ConnexionJpa connexion;
	
	
	/**
	 * Constructeur d'une DaoFactoryJpaOracle.
	 * @param prop Les propriétés de connexion à la BD.
	 * @throws DaoException si un problème de connexion ou de persistance survient.
	 */
	public DaoFactoryJpaOracle (Properties prop) throws DaoException {
		connexion = new ConnexionJpa (PERSIST_UNIT, prop);
	}
	
	/**
	 * Renvoie le type de persistance utilisé
	 */
	@Override
	public TypeFabrique getTypePersistence () {
		return TypeFabrique.JPAOracle;
	}
	
	/**
	 * Ouvre une connexion avec la BD.
	 * @return la Connexion à la base de données
	 */
	@Override
	public Connexion getConnexion() throws DaoException {
		return connexion;
	}
	
	/** 
	 * Ferme la fabrique (ferme la connexion).
	 * @throws DaoException si un problème de persistance est rencontré.
	 */
	@Override
	public void close () throws DaoException {
		connexion.close();
	}
	
	/**
	 * Fabrique un DAO pour la classe Participation.
	 * @return un DAO pour la classe Participation.
	 * @throws DaoException si un problème de persistance est rencontré.
	 */
	@Override
	public DaoOrder getDaoOrder() throws DaoException {
		DaoOrderJpa tmp = new DaoOrderJpa();
		tmp.setEntityManager(connexion.getEntityManager());
		return tmp;
	}

}
